//
// Created by Javery Chiang on 2024/6/30.
//
#include "opt_vertor.h"
#include <string>
#include <iostream>


using namespace std;


Item::~Item() {
    std::cout << "destroy Item" << std::endl;
}

std::ostream &operator<<(ostream &os, const Item &obj) {
    os << " data:" << obj.data;
    return os;
}

Item::Item(int data) : data(data) {
    cout << "item construct " << endl;
}

Item::Item(const string &str) : str(str) {
    cout << "item construct str" << endl;
}

int Item::getData() const {
    return data;
}

void Item::setData(int data) {
    Item::data = data;
}

const string &Item::getStr() const {
    return str;
}

void Item::setStr(const string &str) {
    Item::str = str;
}

bool Item::operator<(const Item &rhs) const {
    if (data < rhs.data)
        return true;
    if (rhs.data < data)
        return false;
    return str < rhs.str;
}

bool Item::operator>(const Item &rhs) const {
    return rhs < *this;
}

bool Item::operator<=(const Item &rhs) const {
    return !(rhs < *this);
}

bool Item::operator>=(const Item &rhs) const {
    return !(*this < rhs);
}
